안녕하세요.
귀사의 제품을 이용하여 로봇 제작을 하고 있습니다.
제가 하고자 하는 방향은 아두이노 우노, GPS, 모터 드라이버(L293D 쉴드) 를 차례로 적층하였습니다.
노트북 시리얼통신을 이용하여 GPS 값을 실시간으로 읽고, 시리얼 통신에 문자를 입력하여 원하는 모터를 구동하고자 합니다.
이때, 프로그램을 시작하면 GPS값을 읽다가 모터 구동을 위해 문자를 입력하기만 하면 GPS 수신을 중단합니다.
모터 구동은 되는데 GPS 수신은 멈추어서 더이상 진행을 할 수가 없습니다.
확인결과 모터쉴드 라이브러리의 AF_DCMortor1(1) 이 명령어가 들어가서 실행되면 gps 수신을 끊습니다.
코딩 프로그램과 시리얼 모니터를 첨부하겠습니다.
혹시 해결 방법이 있다면 회신 부탁 드리겠습니다.
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <AFMotor.h>
#include <Servo.h>
SoftwareSerial serial_connection(4, 3);
TinyGPSPlus gps;
void setup() {
Serial.begin(9600);
serial_connection.begin(9600);
serial_connection.available();
Serial.println("GPS Start");
}
void loop() {
while(1)
{
if (serial_connection.available())
{
if (gps.encode(serial_connection.read()))
{
if (gps.location.isUpdated())
{
Serial.print(gps.location.lat(), 6);
Serial.print(",");
Serial.println(gps.location.lng(), 6);
String a = Serial.readString();
if (a == "p")
{
AF_DCMotor motor1(1);
motor1.setSpeed(500);
motor1.run(FORWARD);
delay(500);
motor1.run(RELEASE);
Serial.println("p");
}
}
}
}
}
}